# -*- coding:utf-8 -*-

# @Time    : 2023/6/5 11:03
# @Author  : zengwenjia
# @Email   : zengwenjia@lingxi.ai
# @Software: LLM_internal

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
import asyncio

from bot.insurance_planner_gpt.agent.base_agent import LLMAgent

default_template = """
作为一个专业{role},你正通过电话和用户沟通，你需要根据当前的对话记录用简洁的一句短语总结用户的当前想要解决的问题。

需要注意以下要求：
1.如果用户表达是一句完整的话，不需要联系上文的{role}说的话，如果不是完整的，需要联系上文{role}说的话。
2.如果用户当前没有问题，则输出"无"，不要无中生有。


下面的'==='后是对话记录，根据整体对话来进行总结用户的问题。
===
{conversation_history}
===

结合对话记录和注意要求，用一句短语简洁总结用户当前的问题（如果有多个只返回最需要解决的一个），用户问题是：
"""


class QuestioningDisputeResolution(LLMAgent):
    """用户问题及疑议判断机器人"""

    def __init__(self, role, conversation_history):
        self.prompt = default_template.format(role=role, conversation_history=conversation_history.strip().replace('\n\n', '\n'))
        super().__init__(self.prompt)


if __name__ == '__main__':
    conversation_history = """
    保险销售员:哎，您好 哎，您终于接电话了，看到您在泰康有个免费意外险已经领取成功了，但是保单一直没有收到，这样日后也就没办法理赔了，来电也是特意提醒您，稍后会把保单通过短信发给您，您注意查收下好吧？
用户:哦，可以。
保险销售员:好的，您的家庭意外保障权益已激活，另外考虑现在疾病频发且医疗费用高昂，我们给您限时升级成600万的医疗全险，并且免费赠送您一张价值235元的体检卡，您可以在当地做个全身体检，我带您到官方微信上看下，您电话不要挂，然后把微信打开，我带您看下，微信打开了吧？
用户:好的。
用户:这个不用你这个
保险销售员:这个交通意外险是免费给您激活的，现在一天只要几块钱就可以升级成600万的医疗全险，重疾意外医疗三险合一，您可以先了解下，参不参加您自己决定，我带您到官方微信上看下，您电话不要挂，打开免提，然后把微信打开，微信打开了吧？
用户:嗯，
保险销售员:嗯，好的，打开微信之后您看到微信右上角有个圆圈加号了吗？然后现在请您点击一下右上角的加号，然后再点一下添加朋友，在最后一行有企业微信联系人，请问您这边有看到吗？
用户:嗯，
保险销售员:您点下企业微信联系人，然后您输下我的手机号。15811159765（停顿1s）15811159765。您输入下，输好了吧？
用户:幺五八
用户:九七。
保险销售员:您好，手机号输好了吗？。我叫毛尚存。有看到吗？
用户:幺五，幺五，八
保险销售员:我的手机号是。15811159765。您输入下,然后搜索，。我叫毛尚存。您加下我的官方企微，我把保单发给您，,添加好了吧？
用户:九七六五。
用户:好嘞。
保险销售员:添加好之后，您会收到一条信息，我把保单链接发给您了，然后您点开下这个保单链接，会显示泰康百万医疗险赠全年体检权益，下面是您的信息，有看到吗？
用户:嗯，
    """
    user_question = QuestioningDisputeResolution(role='保险规划师',
                                                 conversation_history=conversation_history)
    user_question_list = asyncio.run(user_question.achat_auto_llm(type="gpt"))
    print(user_question_list)
